/**
 * shutdown.js - 用于远程关闭热键检测系统
 * 发送SIGTERM信号给正在运行的multi_mode_index.js进程
 */

const { execSync } = require('child_process');
const fs = require('fs');

// 查找正在运行的multi_mode_index进程
try {
  console.log('正在查找热键检测系统进程...');
  
  // 获取所有node进程，并过滤出multi_mode_index.js的进程
  const processInfo = execSync('ps aux | grep "[n]ode.*multi_mode_index.js"').toString();
  const lines = processInfo.trim().split('\n');
  
  if (lines.length === 0) {
    console.log('没有找到正在运行的热键检测系统进程');
    process.exit(0);
  }
  
  console.log(`找到 ${lines.length} 个热键检测系统进程`);
  
  // 对每个找到的进程发送SIGTERM信号
  lines.forEach(line => {
    try {
      const parts = line.trim().split(/\s+/);
      const pid = parts[1]; // PID通常在第二列
      
      console.log(`发送SIGTERM信号到进程 ${pid}...`);
      process.kill(pid, 'SIGTERM');
      console.log(`信号已发送到进程 ${pid}`);
      
      // 等待1秒，检查进程是否已经终止
      setTimeout(() => {
        try {
          // 检查进程是否仍然存在
          process.kill(pid, 0);
          console.log(`警告: 进程 ${pid} 仍在运行，可能需要手动终止 (kill -9 ${pid})`);
        } catch (e) {
          console.log(`进程 ${pid} 已成功终止`);
        }
      }, 1000);
    } catch (err) {
      console.error(`向进程发送信号时出错:`, err);
    }
  });
} catch (err) {
  if (err.status === 1) {
    console.log('没有找到正在运行的热键检测系统进程');
  } else {
    console.error('查找进程时出错:', err);
  }
}
